package com.mini.grpc.serialization;

import java.io.InputStream;

/**
 * Marshaller负责对象与字节流之间的转换。
 *
 * @param <T> 要序列化和反序列化的对象类型
 */
public interface Marshaller<T> {
    
    /**
     * 将对象序列化为输入流
     *
     * @param value 要序列化的对象
     * @return 包含序列化数据的输入流
     */
    InputStream stream(T value);
    
    /**
     * 从输入流解析对象
     *
     * @param stream 包含序列化数据的输入流
     * @return 解析出的对象
     */
    T parse(InputStream stream);
} 